import Cookies from 'js-cookie'
import storeage from "store";

export default class UserAuth{
    constructor(options={}){
        let defaultOptions = {
            token: null,
            refreshToken: null,
            handPic: null,
            userInfo: null,
            userAuthority: null,
            config: null,
            tenantInfo: null,
            entry: null
        }
        options = Object.assign(defaultOptions, options)
        
        this.token = options.token
        this.refreshToken = options.refreshToken
        this.handPic = options.handPic
        this.userInfo = options.userInfo
        this.userAuthority = options.userAuthority
        this.config = options.config
        this.tenantInfo = options.tenantInfo
        this.entry = options.entry
        
        this.mapAuth = {
            token: {
                key: 'Token', 
                _OBJECT: Cookies
            },
            refreshToken: {
                key: 'saber-refresh-token', 
                _OBJECT: Cookies
            },
            handPic: {
                key: 'saber-user-headPic', 
                _OBJECT: Cookies
            },
            userInfo: {
                key: 'UserInfo', 
                _OBJECT: Cookies
            },
            userAuthority: {
                key: 'UserAuthority', 
                _OBJECT: storeage
            },
            config: {
                key: 'Config', 
                _OBJECT: storeage
            },
            tenantInfo: {
                key: 'TenantInfo', 
                _OBJECT: storeage
            },
            entry: {
                key: 'Entry', 
                _OBJECT: storeage
            }
        }
        this.init()
    }

    init(){
        let keys = Object.keys(this.mapAuth)
        keys.forEach(key => {
            let value = this[key];
            if(value !== undefined && value !== null){
                let OBJECT = this.mapAuth[key]['_OBJECT'];
                let item = this.mapAuth[key]['key'];
                OBJECT.set(item, value, {sameSite:"None",secure:true})
            }
        })
    }

    // getToken() {
    //     let key = this.mapKey['token']
    //     return Cookies.get(key)
    // }
    
    // setToken(token) {
    //     let key = this.mapKey['token']
    //     return Cookies.set(key, token)
    // }
    
    // getRefreshToken() {
    //   return Cookies.get(RefreshTokenKey)
    // }
    
    // setRefreshToken(token) {
    //   return Cookies.set(RefreshTokenKey, token)
    // }
    
    // removeToken() {
    //     return Cookies.remove(TokenKey)
    // }
    
    // removeRefreshToken() {
    //   return Cookies.remove(RefreshTokenKey)
    // }
    
    // setHeadPic(address) {
    //     return Cookies.set(UserHeadPic, address);
    // }
    
    // setUserInfo(userInfo) {
    //     return Cookies.set(UserInfo, userInfo);
    // }
    
    // getUserInfo() {
    //     return Cookies.get(UserInfo);
    // }
    
    // setUserAuthority(userAuthority) {
    //     return storeage.set(UserAuthority, userAuthority);
    // }
    
    // getUserAuthority() {
    //     return storeage.get(UserAuthority);
    // }
    
    // setEntry(entry) {
    //     return storeage.set(Entry, entry);
    // }
    
    // getEntry() {
    //     return storeage.get(Entry);
    // }
    
    // removeUserAuthority() {
    //     return storeage.remove(UserAuthority);
    // }
    
    // setTenantInfo(tenantInfo) {
    //     return storeage.set(TenantInfo, tenantInfo);
    // }
    
    // getTenantInfo() {
    //     return storeage.get(TenantInfo);
    // }
    
    // removeTenantInfo() {
    //     return storeage.remove(TenantInfo);
    // }
    
    // setConfig(config) {
    //     return storeage.set(Config, config);
    // }
    
    // getConfig() {
    //     return storeage.get(Config);
    // }
    
    // removeConfig() {
    //     return storeage.remove(Config);
    // }
}